<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // 数组的一些方法
        // 创建数组的两种方法
        arr1 = [1, 23, 4, 4];
        var arr2 = new Array(3, 4, 5);//这里是直接创建了一个[3,4,5]数组
        console.log(arr2);

        // 判断是否为数组类型的两种方法:
        // 1.instanceof 方法
        obj = {};
        console.log(arr1 instanceof Array);
        console.log(obj instanceof Array);
        // 2.Array.isArray()方法
        // 这个是H5新增,ie9以上版本才支持
        console.log(Array.isArray(arr1));
        console.log(Array.isArray(obj));

        // 增加数组元素的两个方法.push unshift
        var a = [3, 4, 5, 6, 7];
        console.log(a.unshift(4, 5));
        console.log(a);
        // unshift在数组开头增加元素,返回值是数组修改后的长度

        var b = [3, 4, 5, 6, 7];
        console.log(b.push(4, 5));
        console.log(b);
        // push是在数组末尾添加元素,返回值也是修改后数组的长度

        var c = [1, 23, 4, 5, 5];
        console.log(c.pop());
        console.log(c);
        // pop是删除数组最后一个元素返回值是这个删除的元素

        var d = [1, 2, 3, 4];
        console.log(d.shift());
        console.log(d);
        // shift是删除数组第一个元素返回值是这个删除的元素
        // 这里的pop和shift方法是没有参数的,并且一次只能删除一个元素


        var arr2 = [2, 4, 6, 7, 9];
        var newarr = [];
        for (var i = 0; i < arr2.length; i++) {
            if (arr2[i] < 5) {
                newarr.push(arr2[i]);
            }
        }
        console.log(newarr);
        // 实现筛选出小于5的数组元素放入新的数组


        // 数组的反转方法
        arr3 = [1, 2, 3, 4, 5];
        console.log(arr3.reverse());

        // 数组的冒泡排序的方法
        arr4 = [7, 3, 5, 6, 1];
        console.log(arr4.sort());

        // 但是数组的冒泡排序有问题,在1位数和两位数都有时会出错
        arr5 = [12, 4, 55, 2, 67];
        var result = arr5.sort(function (a, b) {
            // return a - b;升序排列
            return b - a;//降序排列
        })
        console.log(result);
        // 先记住写法即可,内部有实现原理


        // 数组的索引号查找方法：
        arr6 = ['red', 'pink', 'yellow', 'green'];
        console.log(arr6.indexOf('yellow'));//注意这里的O要大写
        /*  查找只会返回第一个满足的元素下标
         如果能查找到元素则返回对应下标值，否则返回 - 1 */
        arr7 = ['gg', 'blue', 'black', 'purple'];
        console.log(arr7.lastIndexOf('black'));
        // lastIndexOf是从后往前查找，但是返回的下标值还是正常的下标值,不会倒过来
        // 如果查找不到同样返回-1



        /* 数组去重的实现:
        1.首先拿到给定的需要去重的数组, 依次用每个元素去新的初始为空的数组中查找
        2.利用indexOf方法，如果在新数组中查到了就不添加进去，否则就添加进去 */
        var arr8 = ['z', 'x', 'a', 'c', 'x', 'a', 's', 'x', 'z', 'q', 's'];

        // 用一个函数来封装这个方法:
        function unique(oldarr) {
            var newarr = [];
            for (var i = 0; i < oldarr.length; i++) {
                if (newarr.indexOf(oldarr[i]) === -1) {
                    newarr.push(oldarr[i])
                }
            }
            return newarr
        }
        // 以后要实现数组去重只需要传入需要去重的数组就可以实现去重
        console.log(unique(arr8));

        // 数组的转换为字符串的方法:
        var arr9 = [1, 2, 3, 4, 5];
        console.log(arr9.toString());

        var arr10 = ['red', 'blue', 'green', 'yellow']
        console.log(arr10.join());
        console.log(arr10.join('-'));
        // 使用join方法可以指定符号连接数组元素


        /* concat()  连接两个或多个数组;
        slice()   数组截取slice(begin, end) 返回被截取项目的新数组
        splice()  数组删除splice(第几个开始, 要删除个数) 返回删除的新数组 */
        // 这几个方法比较重要, 特别是splice, vue中需要用到这几个方法来操作数组元素

    </script>
</head>

<body>

</body>

</html>